// Pointer.cpp

#include <vector>
#include <iostream>

using namespace std;

// 接受一个整数变量的位置作为参数
void triple(int *n) {
  // triple 会把 n 拷贝一份给自己
  *n = (*n) * 3;
}

// 指针是保存其它变量位置的类型
int main(int argc, char const *argv[])
{
  /* code */
  int x = 3;
  &x; // 计算变量 x 在内存中的位置
      // 如何把这个位置也保存在一个变量里呢？
      // 申请另外一种类型的变量，什么类型呢？保存 int 变量位置的类型
  int *pX = &x; // pX 是什么？px 是变量 x 在内存中的位置
  // 这个位置看起来是什么样的？
  cout<<pX<<endl; // 0x7ff7aff6e63c

  // 有了这个位置之后，有什么用呢？
  // 可以通过这个位置，间接地修改这个位置的值；
  // *pX = (*pX) * 3;

  triple(&x);

  // MM: 9
  // RR: 9
  cout<<x<<endl;
  return 0;
}

